package org.dicr.util.jds.gui;

import java.awt.*;

import org.dicr.event.*;

import com.borland.dbswing.*;
import com.borland.dx.dataset.*;

/***********************************************************************************************************************
 * @author Igor A Tarasov &lt;java@dicr.org&gt;
 * @version 021025
 **********************************************************************************************************************/
public abstract class DataNavPanel extends DataPanel implements ColumnAware {
	/**
     * 
     */
	private static final long serialVersionUID = -1078880239179443728L;

	protected String columnName = null;

	protected TableScrollPane scrollPane = new TableScrollPane();

	/*******************************************************************************************************************
	 * Конструктор
	 ******************************************************************************************************************/
	public DataNavPanel() {
		try {
			jbInit();
		} catch (Exception ex) {
			DicrExceptionHandler.handleException(ex, this);
		}
	}

	/*******************************************************************************************************************
	 * Инициализация
	 ******************************************************************************************************************/
	private void jbInit() {
		this.add(this.scrollPane, BorderLayout.CENTER);
		this.controlPanel.setControlButtonsMask(DataControlPanel.BUTTON_ADD | DataControlPanel.BUTTON_DEL
		        | DataControlPanel.BUTTON_FIRST | DataControlPanel.BUTTON_LAST);
	}

	/*******************************************************************************************************************
	 * Устанавливает имя колонки навигации
	 ******************************************************************************************************************/
	@Override
    public void setColumnName(String theColumnName) {
		if (this.columnName != theColumnName) this.columnName = theColumnName;
	}

	/*******************************************************************************************************************
	 * Возвращает имя колонки навигации
	 ******************************************************************************************************************/
	@Override
    public String getColumnName() {
		return this.columnName;
	}

	/*******************************************************************************************************************
	 * Проверка корректности состояния источника данных
	 ******************************************************************************************************************/
	@Override
	protected boolean isValidDataSetState() {
		return (super.isValidDataSetState() && this.columnName != null && this.dataset.hasColumn(this.columnName) != null);
	}
}
